package com.inno.subject.infra.basic.service;

import com.github.pagehelper.Page;
import com.inno.subject.infra.basic.entity.PlannerSubjectInfo;
import com.inno.subject.infra.entity.CategorySubjectCountEntity;

import java.util.Date;
import java.util.List;

/**
 * (PlannerSubjectInfo)表服务接口
 *
 * @author makejava
 * @since 2024-11-16 20:57:05
 */
public interface PlannerSubjectInfoService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    PlannerSubjectInfo queryById(Long id);


    /**
     * 新增数据
     *
     * @param plannerSubjectInfo 实例对象
     * @return 实例对象
     */
    PlannerSubjectInfo insert(PlannerSubjectInfo plannerSubjectInfo);

    /**
     * 修改数据
     *
     * @param plannerSubjectInfo 实例对象
     * @return 实例对象
     */
    int update(PlannerSubjectInfo plannerSubjectInfo);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Long id);

    Page<PlannerSubjectInfo> queryPage(PlannerSubjectInfo entity,int page,int pageSize);

    Long queryCursor(Long categoryId, String subjectLevel, Long subjectType, int cursor, Date createTime);

    List<PlannerSubjectInfo> queryByIdList(List<Long> subjectIdList);

    void batchDeleteByIdList(List<Long> ids);

    void batchInsert(List<PlannerSubjectInfo> list);

    Long queryPageCount(PlannerSubjectInfo entity);

    List<CategorySubjectCountEntity> queryCategorySubjectCount();

}
